www.gusucode.com > Useforum PHP轻论坛 v1.2.1PHP源码程序 > Useforum PHP轻论坛 v1.2.1/Useforum_v1.2.1/Useforum_v1.2.1/controller/api.php

    <?php
/**
 * Useforum  Copyright (C) 2010-2014 接口
 * 添加日期 14-7-4 GW
 */
class api extends useforum
{

	function qq_login (){
		require_once("./include/Extensions/API/qqConnectAPI.php");
		$qc = new QC();
		$qc->qq_login();
	}

	function index (){
		require_once("./include/Extensions/API/qqConnectAPI.php");
		$qc = new QC();
		$access_token = $qc->qq_callback();
		$openid = $qc->get_openid();
		if(!$_SESSION['userinfo']['uid']):
			if($result = spClass("lib_user") ->find(array("openid"=>$openid)))://判断是否存在openid记录
				spClass('spAcl')->set($result['acl']);
				$_SESSION["userinfo"] = $result; // 在SESSION中记录当前用户的信息
					setcookie('autologin',$result['uname'],time()+3600*24*10);//保持7天自动登录
					$pass = rand() . $_SERVER['REQUEST_TIME'] . 'Useforum' . $result['uname'];
					setcookie('temppassword',md5($pass),time()+3600*24*10);//保持7天自动登录
					$notice = spAccess('r',$result['uname']);
					$notice['temppassword'] = md5($pass);
					spAccess('w' , $result['uname'], $notice,3600*24*10);
					$this->success("使用QQ互联登录成功,欢迎您!",spUrl());
			else:
				$this->qq_register($openid, $access_token );
			endif;
		else:
			spClass('lib_user')->updateField(array('uid'=>$_SESSION["userinfo"]["uid"]), 'openid',$openid);
			$i = spAccess('r',$_SESSION["userinfo"]["uname"]);
			$i['access_token'] = $access_token;
			spAccess('w' , $_SESSION["userinfo"]["uname"],$i);
			$this->success("已成功绑定QQ!", spUrl("api","qq_binding"));
		endif;
	}

	function qq_register ($openid,$access_token){
		$this->openid = $openid;
		$this->access_token = $access_token;
		if(array_key_exists("uname",$this->spArgs())){
			if($this->spArgs("type") ==1){ //登录已有账号
				$userObj = spClass("lib_user");
				$uname = $this->spArgs("uname");
				$upass = md5($this->spArgs("upass"));
				$autologin = $this->spArgs("autologin");
				if( $_COOKIE['lognum'] <= 5 ||($_SERVER['REQUEST_TIME'] - $_COOKIE['logtime']) > 900){
					if( false == $userObj->userlogin($uname, $upass,$autologin) ){
						setcookie("lognum",$_COOKIE['lognum'] + 1, $_SERVER['REQUEST_TIME']+900);
						$_COOKIE['lognum']++;
						if($_COOKIE['lognum'] > 5)setcookie("logtime",$_SERVER['REQUEST_TIME'], $_SERVER['REQUEST_TIME']+3600);
						$this->errmsg ="用户名或密码错误,请重新输入!";
					}else{
						$userObj->last($uname);
						$ip = $userObj->setIP($uname);
						$info = $userObj->find(array('uname'=>$uname),'acl');
						spClass('spAcl')->set( $info['acl']);
						$city = getCity(array( "ip" => $ip ));
						$useracl = spClass("spAcl")->get(); // 通过acl的get可以获取到当前用户的角色标识
						$acl = "GBADMIN" == $useracl ? "管理员":"用户";
						if ( $ip ) $lastip = "<br>上次登录IP {$ip} 地点 {$city}";
						$i = spAccess("r",$uname);
						$i['last'] = $_SERVER['REQUEST_TIME'];
						$i['access_token'] = $access_token;
						spAccess("w",$uname,$i);
						$userObj->updateField(array('uname'=>$uname), 'openid',  $this->spArgs("openid"));
						$this->success("使用QQ互联登录成功,欢迎您,尊敬的{$acl}!{$lastip}",spUrl(),2);
					}
				}else{
					$this->errmsg ="输入错误超过5次,请等待15分钟再试!";
				}
			}else{
				$userObj = spClass("lib_user");
				$userObj->verifier = $userObj->reg_verifier;
				$upass = md5($this->spArgs("upass"));
				$results = $userObj->spVerifier($this->spArgs());
				if( false == $results ){
					$userObj->creatuser($this->spArgs("uname"),$this->spArgs("email"),$upass);
					/*自动登录写入*/
					if($autologin = $this->spArgs("uname")){
						setcookie('autologin',$this->spArgs("uname"),time()+3600*24*10);//保持7天自动登录
						$pass = rand() . $_SERVER['REQUEST_TIME'] . 'Useforum' . $this->spArgs("uname");
						setcookie('temppassword',md5($pass),time()+3600*24*10);
					$notice = spAccess('r',$this->spArgs("uname"));
					$notice['temppassword'] = md5($pass);
					spAccess('w' , $this->spArgs("uname"), $notice,3600*24*10);
					}
					$i = spAccess('r',$this->spArgs("uname"));
					$i['access_token'] = $access_token;
					spAccess('w' , $this->spArgs("uname"), $i);
					$userObj->updateField(array('uname'=>$this->spArgs("uname")), 'openid',  $this->spArgs("openid"));
					spClass('spAcl')->set('GBUSER');
					$this->success("使用QQ互联登录成功!",spUrl());
				}else{
					foreach($results as $item){
						foreach($item as $msg){
							$this->errmsg = "{$msg};{$this->errmsg}";
						}
					}
				}
			}
		}
		$this->display("api_index.html");
	}

	//qq绑定
	function qq_binding(){
		$result = spClass("lib_user") ->find(array("uid"=>$_SESSION["userinfo"]["uid"]),null,'openid');
		if($result['openid']){
			$this->is_binding = 1;
		}
		if($this->spArgs('remove_binding')){
			spClass('lib_user')->updateField(array('uid'=>$_SESSION["userinfo"]["uid"]), 'openid','');
			$this->success("已解除QQ绑定!", spUrl("api","qq_binding"));
		}
	}

}